package com.pic.mgt.haishin.executer.tar;

import java.io.File;

public interface DeTarFile {
	public static enum DeTarResult {
		EntryBeFiltered,
		EntryIsCompleted}
	
	/**
	 * 解壓縮tar檔案。目錄的部份將會全部忽略，只解最外層的檔案。
	 * @param tarFile 來源 tar 壓縮檔
	 * @param deTarToPath　解壓縮的目的目錄
	 * @throws DeTarFileException
	 */
	void deTarFile(File tarFile)
								throws DeTarFileException;
	
	/**
	 * 當呼叫 deTarFile() 方法進行解壓時，在解壓過程中若要中斷解壓動作可呼叫此方法。
	 */
	void interruptDeTarAction();
	
	void setDeTarFileChecker(DeTarFileChecker deTarFileChecker);
	DeTarFileChecker getDeTarFileChecker();
	void removeDeTarFileTerminalChecker();
	
	/**
	 * 設定解tar過程中，針對每一個Entry(檔案或目錄)，完成解tar時就會發出通知。
	 * @param deTarFileCompleteNotify
	 */
	void setEntryListener(
					EntryListener entryListener);
	EntryListener getEntryListener();
	void removeEntryListener();
	
	/**
	 * 設定在解 tar 過程中，是否要使用 GZIP 解壓縮。
	 * 預設為 false。
	 * @param status
	 */
	void setGZipDecompress(boolean status);
	boolean isUsingGZipDecompress();
}
